package xmlParsers;

import java.io.File;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;

import javax.xml.parsers.DocumentBuilder;
import javax.xml.parsers.DocumentBuilderFactory;
import javax.xml.parsers.ParserConfigurationException;

import negocio.ItemRemito;
import negocio.Producto;

import org.w3c.dom.Document;
import org.w3c.dom.Element;
import org.w3c.dom.Node;
import org.w3c.dom.NodeList;
import org.xml.sax.SAXException;

public class SystemParserLeerRemito {
	
	
private static SystemParserLeerRemito instancia;
	
	private DocumentBuilderFactory factory;
	
	private SystemParserLeerRemito(){
		this.factory = DocumentBuilderFactory.newInstance();
		factory.setIgnoringElementContentWhitespace(true);
	}

	public static SystemParserLeerRemito getInstance() {
		if (instancia == null)
			return new SystemParserLeerRemito();
		return instancia;
	}
	
	public List<ItemRemito> listaItemsRemito(String path) throws SAXException, IOException, ParserConfigurationException{
		
		DocumentBuilder builder = this.factory.newDocumentBuilder();
		File f = new File(path);
		String nombre="";
		float cantidad=0;
		ItemRemito item = new ItemRemito();
		List<ItemRemito>lista = new ArrayList<>();
		int z=0;
		if (f != null) {
			

			Document doc = builder.parse(f);
			Element root = doc.getDocumentElement();
			NodeList children = root.getChildNodes();
			
			for(int i=0;i<children.getLength();i++){
				Node child = children.item(i);
				NodeList hijos = null;
				
				if (child instanceof Element) {
					Element childelement = (Element) child;
					
					if (childelement.getNodeName().trim().equalsIgnoreCase("productos")){
						hijos= childelement.getChildNodes();
						
						for (int j = 0; j < hijos.getLength(); j++){
							if(hijos.item(j).getNodeName().trim().equalsIgnoreCase("nombre"))
								nombre= hijos.item(j).getTextContent();
							
							if(hijos.item(j).getNodeName().trim().equalsIgnoreCase("cantidad"))
								cantidad= Float.parseFloat(hijos.item(j).getTextContent());
							
							
							
							
							Producto p = new Producto();
							p.setNombre(nombre);
							item.setCantidad(cantidad);
							item.setProducto(p);
							
							
							if(!item.getProducto().getNombre().equalsIgnoreCase("") && item.getCantidad()!=0){
								
								ItemRemito item2 = new ItemRemito();
								item2.setCantidad(cantidad);
								item2.setProducto(p);
								
								lista.add(z, item2);
								z++;
								cantidad=0;
								nombre="";
							}
							
							
						}
						
				
				
				}
			}
		}
			
	}
		
		
		return lista;
		
		
	}

	public int getNumeroOrden(String path) throws ParserConfigurationException, SAXException, IOException {
		DocumentBuilder builder = this.factory.newDocumentBuilder();
		File f = new File(path);
		int numeroOrden=0;
		
if (f != null) {
			

			Document doc = builder.parse(f);
			Element root = doc.getDocumentElement();
			numeroOrden=Integer.parseInt(root.getAttribute("numeroOrden"));
		
		
		
	}
		return numeroOrden;
	}
}


